if ( regs != NULL )
{
-#if defined (__x86_64__)
- __vmread(GUEST_RFLAGS, ®s->rflags);
- __vmread(GUEST_SS_SELECTOR, ®s->ss);
- __vmread(GUEST_CS_SELECTOR, ®s->cs);
- __vmread(GUEST_DS_SELECTOR, ®s->ds);
- __vmread(GUEST_ES_SELECTOR, ®s->es);
- __vmread(GUEST_GS_SELECTOR, ®s->gs);
- __vmread(GUEST_FS_SELECTOR, ®s->fs);
- __vmread(GUEST_RIP, ®s->rip);
- __vmread(GUEST_RSP, ®s->rsp);
-#elif defined (__i386__)
__vmread(GUEST_RFLAGS, ®s->eflags);
__vmread(GUEST_SS_SELECTOR, ®s->ss);
__vmread(GUEST_CS_SELECTOR, ®s->cs);
__vmread(GUEST_FS_SELECTOR, ®s->fs);
__vmread(GUEST_RIP, ®s->eip);
__vmread(GUEST_RSP, ®s->esp);
-#endif
}
if ( crs != NULL )
ASSERT(v->arch.hvm_vmx.launch_cpu == smp_processor_id());
-#if defined (__x86_64__)
- __vmwrite(GUEST_SS_SELECTOR, regs->ss);
- __vmwrite(GUEST_DS_SELECTOR, regs->ds);
- __vmwrite(GUEST_ES_SELECTOR, regs->es);
- __vmwrite(GUEST_GS_SELECTOR, regs->gs);
- __vmwrite(GUEST_FS_SELECTOR, regs->fs);
- __vmwrite(GUEST_RSP, regs->rsp);
-
- __vmwrite(GUEST_RFLAGS, regs->rflags);
- if (regs->rflags & EF_TF)
- __vm_set_bit(EXCEPTION_BITMAP, EXCEPTION_BITMAP_DB);
- else
- __vm_clear_bit(EXCEPTION_BITMAP, EXCEPTION_BITMAP_DB);
-
- __vmwrite(GUEST_CS_SELECTOR, regs->cs);
- __vmwrite(GUEST_RIP, regs->rip);
-#elif defined (__i386__)
__vmwrite(GUEST_SS_SELECTOR, regs->ss);
__vmwrite(GUEST_DS_SELECTOR, regs->ds);
__vmwrite(GUEST_ES_SELECTOR, regs->es);
__vmwrite(GUEST_CS_SELECTOR, regs->cs);
__vmwrite(GUEST_RIP, regs->eip);
-#endif
/* Reload current VCPU's VMCS if it was temporarily unloaded. */
if ( (v != current) && hvm_guest(current) )